home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-02-05 | 16.8 KB | 503 lines | [TEXT/MPS ] |
- // Copyright © 1991 Apple Computer, Inc. All rights reserved.
-
- #ifndef __UTARO__
- #define __UTARO__
-
- #ifndef __UCORE__
- #include "UCore.h"
- #endif
-
- #ifndef __UPRINTING__
- #include <UPrinting.h>
- #endif
-
- #ifndef __UGridView__
- #include <UGridView.h>
- #endif
-
- #ifndef __UDRAWINGENVIRONMENT__
- #include <UDrawingEnvironment.h>
- #endif
-
- #ifndef __ALIASES__
- #include <Aliases.h>
- #endif
-
- typedef enum Player
- {
- kServerAEPlayer = 0,
- kMousePlayer,
- kRemoteAEPlayer,
- kLocalAEPlayer
- } Player;
-
- typedef enum
- {
- kNotFixed,
- kBlackFixed,
- kWhiteFixed
- } PlayerFixed;
-
- typedef enum
- {
- kForeground,
- kBackground,
- kTopLeftCorner,
- kTopLeftLine,
- kBottomRightLine,
- kBottomRightCorner,
- kDrawPartEnd
- } DrawPart;
-
- typedef enum
- {
- kDive = 1000,
- kBang,
- kPshoo,
- kWarn,
- kFly
- } SoundEffect;
-
- class TServerDocument;
- class TPreferenceDocument;
- class TShadowView;
- class TTaroEraser;
-
- // ============================== AppleEvent Handler=================================
- pascal OSErr ReceiveReply(AppleEvent & theAppleEvent, AppleEvent & reply, long handlerRefcon);
-
- class TColorDrawingEnvironment;
- // ==========================================================================================
- class TTaroApplication: public TCoreApplication {
- private:
- char fClientHCellSize;
- char fClientVCellSize;
- char fClientBlackPlayer;
- char fClientWhitePlayer;
-
- char fServerPlayer;
-
- Handle fBlackCursor;
- Handle fWhiteCursor;
- Handle fNotAvailableCursor;
-
- StringHandle fGameDrawMessage;
-
- TPreferenceDocument * fPreferenceDocument;
-
- TColorDrawingEnvironment * fBlackDrawingEnvironment;
- TColorDrawingEnvironment * fWhiteDrawingEnvironment;
- TColorDrawingEnvironment * fEmptyDrawingEnvironment;
-
- TTaroEraser * fTaroEraser;
-
- Handle fDiveSound;
- Handle fBangSound;
- Handle fPshooSound;
- Handle fWarnSound;
-
- Boolean fSoundEnable;
- public:
- virtual pascal void ITaroApplication(void);
- virtual pascal void OpenNew(CommandNumber itsCommandNumber);
- virtual pascal TFile* DoMakeFile(CommandNumber itsCommandNumber);
- virtual pascal TColorDrawingEnvironment * GetDrawingEnvironment(CellState aColor);
- virtual pascal void GetFileTypeList(CommandNumber itsCommandNumber, TypeListHandle& typeList);
- virtual pascal CommandNumber KindOfDocument(CommandNumber itsCommandNumber, TFile* aFile);
- virtual pascal Boolean NewDocumentDialog(char & aHSize, char & aVSize,
- char & aBlackPlayer, char & aWhitePlayer, Str255 aClientName);
- virtual pascal TDocument *DoMakeDocument(CommandNumber, TFile* itsFile);
- virtual pascal void SetColorCursor(short aCursor);
- virtual pascal Handle GetColorCursor(short aCursor);
- virtual pascal void PutColorCursor(short aCursor, Handle theCursor);
- virtual pascal StringHandle ReturnGameDrawMessage(void);
- virtual pascal void DrawCell(TView * aView, Rect & aQDRect);
- virtual pascal TPreferenceDocument * ReturnPreference(void);
- virtual pascal void DoMenuCommand(CommandNumber aCommandNumber);
- virtual pascal void DoSetupMenus(void);
- virtual pascal short GetDepth(void);
- virtual pascal TTaroEraser * GetTaroEraser(void);
- virtual pascal TAppleEventPlayer * CreateServerPlayer(void);
- virtual pascal void DoAboutBox();
- virtual pascal void PlaySound(SoundEffect aSound);
- virtual pascal void ToggleSoundMenu(void);
- };
-
- class TClientTarget;
- // ==========================================================================================
- class TTargetListView: public TTextListView {
- private:
- TList * fTargetList;
- public:
- virtual pascal void SetUp(TList * aTargetList);
- virtual pascal void GetItemText(short anItem, Str255 & aString);
- virtual pascal void SelectItem(short anItem, Boolean extendedSelection, Boolean highlight, Boolean select);
- virtual pascal void SelectFirstItem(void);
- virtual pascal void DeleteSelectedTarget(void);
- virtual pascal TClientTarget * GetSelectedTarget(void);
- };
-
- // ==========================================================================================
- class TColorApplication: public TTaroApplication {
- private:
- short fOldDepth;
- public:
- virtual pascal void ITaroApplication(void);
- virtual pascal void SetColorCursor(short aCursor);
- virtual pascal void DrawCell(TView * aView, Rect & aQDRect);
- virtual pascal void ChangePixelDepth(short depth);
- virtual pascal short GetDepth(void);
- };
-
- class TVisibleScene;
- class TPlayer;
- class TTaroGridView;
- class TInfoView;
- class TPPCTarget;
- class TPSNTarget;
-
- // ==========================================================================================
- class TPreferenceDocument: public TFileBasedDocument {
- private:
- TList * fRemoteTargetList;
- TList * fLocalTargetList;
- TButton * fRemoveButton;
- public:
- virtual pascal void IPreferenceDocument(TFile * aFile);
- virtual pascal void DoRead(TFile* aFile, Boolean forPrinting);
- virtual pascal void PlayerRemoveDialog(Player ID);
- virtual pascal void SetButtonState(Boolean RemoveButton);
- virtual pascal void AddRemoteTarget(void);
- virtual pascal void AddLocalTarget(void);
- virtual pascal short GetRemoteTargetListSize(void);
- virtual pascal short GetLocalTargetListSize(void);
- virtual pascal void DoMakeViews(Boolean forPrinting);
- virtual pascal void Free(void);
- virtual pascal void ProcessDied(OSErr anError, ProcessSerialNumber & theProcess);
- virtual pascal short AppendPlayerMenu(MenuHandle theMenu);
- virtual pascal TClientTarget * ReturnIndexedTarget(short index);
- virtual pascal void DoInitialState(void);
- };
-
-
- // ==========================================================================================
- class TPreferenceFile: public TFile {
- private:
- public:
- virtual pascal void IPreferenceFile(void);
- };
-
-
- // ==========================================================================================
- class TVisibleDocument: public TCoreDocument {
- private:
- TTaroGridView * fTaroView;
- TInfoView * fInfoView;
- TVisibleScene * fVisibleScene;
- TList * fMoveList;
- public:
- virtual pascal void IVisibleDocument(char aHCellSize, char aVCellSize,
- char aBlackPlayer, char aWhitePlayer);
- virtual pascal void DoMakeViews(Boolean forPrinting);
- virtual pascal void Free(void);
- virtual pascal TInfoView * ReturnInfoView(void);
- virtual pascal TVisibleScene * ReturnVisibleScene(void);
- virtual pascal void ShowStatusMessage(Str255 & aMessage);
- virtual pascal void Save(CommandNumber itsCommandNumber, Boolean askForFileName, Boolean makingCopy);
- virtual pascal TPlayer * CreatePlayer(char PlayerType, CellState aColor);
- virtual pascal void GetPlayerName(GameState aColor, Str255 & aString);
- virtual pascal void MouseMove(TRecordCell * aMouseMove);
- virtual pascal void GameOver(void);
- virtual pascal void GameClose(void);
- virtual pascal void PlayerMove(TRecordCell * aMouseMove);
- virtual pascal void SendTurn(void);
- };
-
-
- // ==========================================================================================
- class TServerDocument: public TVisibleDocument {
- private:
- TAppleEventPlayer * fServerPlayer;
- public:
- virtual pascal void IServerDocument(char aHCellSize, char aVCellSize, char aPlayer,
- CellState aColor, TAppleEventPlayer * aServerPlayer);
- virtual pascal TPlayer * CreatePlayer(char PlayerType, CellState aColor);
- };
-
-
- // ==========================================================================================
- class TVisibleScene: public TScene {
- private:
- TTaroGridView * fTaroView;
- public:
- virtual pascal TTaroGridView * ReturnTaroGridView(void);
- virtual pascal TCell * CreateCell(char aColumn, char aRow);
- virtual pascal void IVisibleScene(TTaroGridView * aTaroView,
- TVisibleDocument * aTaroDocument);
- virtual pascal void ChangeCount(CellState aColor, short aNumber);
- virtual pascal void SetInitialState(void);
- };
-
-
- // ==========================================================================================
- class TShadowView: public TView {
- private:
- CellState fColor;
- public:
- virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
- virtual pascal void SetColor(CellState aColor);
- virtual pascal void Draw(const VRect& area);
- };
-
-
- // ==========================================================================================
- class TVisibleGridView: public TGridView {
- private:
- public:
- virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
- virtual pascal void Draw(const VRect& area);
- virtual pascal void DrawCell(GridCell aCell, const VRect& aRect);
- virtual pascal CellState GetCellState(GridCell aCell);
- };
-
-
- const char kNumOfRow = 8;
- const char kNumOfColumn = 32;
-
- typedef struct
- {
- unsigned long bitMapData[8];
- } TaroBitMap, **TaroBitMapHandle;
-
- // ==========================================================================================
- class TAboutGridView: public TVisibleGridView {
- private:
- CellState fAboutCell[kNumOfColumn][kNumOfRow];
- TaroBitMapHandle fTaroBitMapHandle;
- public:
- virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
- virtual pascal CellState GetCellState(GridCell aCell);
- virtual pascal void SetCellState(GridCell aCell, CellState aState);
- virtual pascal void DoMouseCommand(VPoint& theMouse, TToolboxEvent* event, Point hysteresis);
- virtual pascal Boolean GetBitMapData(GridCell aCell);
- virtual pascal void Free(void);
- };
-
-
- class TVisibleCell;
- // ==========================================================================================
- class TTaroGridView: public TVisibleGridView {
- private:
- TVisibleScene *fVisibleScene;
- public:
- virtual pascal void SetVisibleScene(TVisibleScene * aVisibleScene, short hCellSize, short vCellSize);
- virtual pascal void DoSetCursor(const VPoint& localPoint, RgnHandle cursorRegion);
- virtual pascal void SetCursor(TVisibleCell * aVisibleCell);
- virtual pascal void DoMouseCommand(VPoint& theMouse, TToolboxEvent* event, Point hysteresis);
- virtual pascal void SetEraseColor(TVisibleCell * aCell);
- virtual pascal void ForceRedrawCell(TVisibleCell * aCell);
- virtual pascal CellState GetCellState(GridCell aCell);
- };
-
-
- class TNumberStringView;
- class TStringView;
- class TTaroStaticText;
- // ==========================================================================================
- class TInfoView: public TShadowView {
- private:
- TNumberStringView *fBlackNumber;
- TNumberStringView *fWhiteNumber;
- TTaroStaticText *fStaticText;
- TStringView *fBlackText;
- TStringView *fWhiteText;
- public:
- virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
- virtual pascal void SetNumber(CellState aColor, short aNumber);
- virtual pascal void SetPlayer(CellState aColor, Str255 aPlayerStr);
- virtual pascal void SetView(TNumberStringView * aBlackNumber, TNumberStringView * aWhiteNumber,
- TTaroStaticText * aStaticText, TStringView * aBlackText, TStringView * aWhiteText);
- virtual pascal void ShowStatusMessage(Str255 & aMessage);
- };
-
-
- // ==========================================================================================
- class TPlayerPopup: public TPopup {
- private:
- public:
- virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
- virtual pascal void SetClientName(Str255 aClientName);
- };
-
-
- // ==========================================================================================
- class TTaroStaticText: public TStaticText {
- private:
- public:
- virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
- virtual pascal void SetColor(CellState aColor);
- virtual pascal void Draw(const VRect& area);
- virtual pascal void SetText(const Str255 & aString, Boolean redraw);
- };
-
-
- // ==========================================================================================
- class TTaroWindow: public TWindow {
- private:
- public:
- virtual pascal void Update(void);
- };
-
-
- // ==========================================================================================
- class TStringView: public TView {
- private:
- Str255 fString;
- public:
- virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
- virtual pascal void Draw(const VRect& area);
- virtual pascal void SetColor(CellState aColor);
- virtual pascal void SetText(Str255 & aString, Boolean redraw);
- };
-
-
- // ==========================================================================================
- class TNumberStringView: public TStringView {
- private:
- public:
- virtual pascal void SetValue(long value, Boolean redraw);
- };
-
-
- // ==========================================================================================
- class TVisibleCell: public TCell {
- private:
- public:
- virtual pascal void ChangeState(void);
- virtual pascal void PutPiece(void);
- };
-
-
- // ==========================================================================================
- class TMousePlayer: public TPlayer {
- private:
- public:
- virtual pascal void IMousePlayer(TCoreDocument * aCoreDocument);
- virtual pascal void MyTurn(void);
- virtual pascal void MouseMove(TRecordCell * aMouseMove);
- virtual pascal void GameOver(GameResult aResult);
- virtual pascal void GetName(Str255 & aString);
- };
-
- // ==========================================================================================
- class TVisibleAEPlayer: public TAppleEventPlayer {
- private:
- public:
- virtual pascal void ShowPlayerMessage(short statusID);
- virtual pascal void GameOver(GameResult aResult);
- virtual pascal void MyTurn(void);
- virtual pascal void GetName(Str255 & aString);
- virtual pascal void MyMove(TRecordCell * aMove);
- };
-
- // ==========================================================================================
- class TServerAEPlayer: public TVisibleAEPlayer {
- private:
- public:
- virtual pascal void IServerAEPlayer(TCoreDocument * aCoreDocument, CellState aColor);
- virtual pascal void Free(void);
- };
-
- // ==========================================================================================
- class TClientAEPlayer: public TVisibleAEPlayer {
- private:
- public:
- virtual pascal void IClientAEPlayer(TCoreDocument * aCoreDocument,
- CellState aColor, TClientTarget * aClientTarget);
- virtual pascal void TargetReply(unsigned long aTargetTransactionID);
- virtual pascal void TargetDied(void);
- virtual pascal void SetTargetTableSpecifier(AEDesc & TableSpec);
- };
-
- // ==========================================================================================
- class TClientTarget: public TTarget {
- private:
- TList * fUserList;
- public:
- virtual pascal void IClientTarget(void);
- virtual pascal void Free(void);
- virtual pascal void Remove(void);
- virtual pascal void SendNewElement(char HCellSize, char VCellSize, CellState aColor,
- TVisibleAEPlayer * theClient, unsigned long aTransactionID);
- virtual pascal void SendBeginTransaction(long & aTransactionID);
- virtual pascal void SendEndTransaction(GameResult aResult, unsigned long theServer, TPlayer * theClient);
- virtual pascal void GetName(Str255 & aString);
- virtual pascal void AddUser(TClientAEPlayer * theClient);
- virtual pascal void SendQuitApplication(void);
- virtual pascal short GetUserCount(void);
- virtual pascal void TellUsersThatProcessDied(void);
- };
-
- // ==========================================================================================
- class TPPCTarget: public TClientTarget {
- private:
- TargetIDHdl fTargetID;
- public:
- virtual pascal void IPPCTarget(TargetIDHdl aTargetID);
- virtual pascal void GetName(Str255 & aString);
- virtual pascal void Remove(void);
- virtual pascal void Free(void);
- };
-
- // ==========================================================================================
- class TPSNTarget: public TClientTarget {
- private:
- ProcessSerialNumber fProcess;
- AliasHandle fFile;
- public:
- virtual pascal void IPSNTarget(AliasHandle aFile);
- virtual pascal Boolean TestProcess(void);
- virtual pascal void LaunchProcess(void);
- virtual pascal void SendBeginTransaction(long & aTransactionID);
- virtual pascal void SendEndTransaction(GameResult aResult, unsigned long theServer, TPlayer * theClient);
- virtual pascal void GetName(Str255 & aString);
- virtual pascal void Remove(void);
- virtual pascal void Free(void);
- virtual pascal void CompareProcess(ProcessSerialNumber & theProcess);
- virtual pascal void GetFSSpec(FSSpec & aFile);
- };
-
- // ==========================================================================================
- class TColorDrawingEnvironment: public TDrawingEnvironment {
- private:
- CTabHandle fColorTableHandle;
- PixPatHandle fPixPatTable[kDrawPartEnd];
- short fID;
- public:
- virtual pascal void Initialize(void);
- virtual pascal void Free(void);
- virtual pascal void IColorDrawingEnvironment(short aColorTableID);
- virtual pascal void SetupAdornerColor(DrawPart aPart);
- virtual pascal void Setup(void);
- virtual pascal void MakePixPatTable(void);
- };
-
- // ==========================================================================================
- class TTaroEraser: public TEraseAdorner {
- private:
- CTabHandle fColorTableHandle;
- public:
- virtual pascal void Draw(TView * itsView, const VRect& area);
- };
-
- // ==========================================================================================
- class TSoundCommand: public TCommand {
- private:
- SoundEffect fSound;
- public:
- virtual pascal void ISoundCommand(SoundEffect aSound);
- virtual pascal void DoIt(void);
- };
-
- #endif
-